package org.example.ims.Service.Base;

import org.example.ims.Entity.Base.Product;
import org.springframework.data.domain.Page;
import java.util.Optional;

/**
 * 商品信息服务接口
 * 提供对商品（Product）实体的基本业务操作
 */
public interface ProductService {

    /**
     * 保存一个新的商品信息
     *
     * @param product 包含类别信息的对象
     * @return 已保存的类别对象
     */
    Product addProduct(Product product);

    /**
     * 保存一个新的商品
     *
     * @param product 包含商品信息的对象，且手动设置ID
     * @return 已保存的类别对象
     */
    Product addProduct2(Product product);

    /**
     * 根据类别ID查找商品信息
     *
     * @param productId 商品ID
     * @return 如果存在则返回对应的Optional<Product>，否则为空
     */
    Optional<Product> findProductById(Integer productId);

    /**
     * 获取所有商品列表
     *
     * @return 所有商品的列表
     */
    Page<Product> findAllProducts(Integer page, Integer size );
    /*自定义查询*/
    Page<Product> searchProducts(String name, Integer categoryId, String status, Integer page, Integer size);

    /**
     * 更新指定ID的商品信息
     *
     * @param productId 要更新的商品ID
     * @param productDetails 新的商品信息
     * @return 更新后的类别对象，如果原商品不存在则返回null
     */
    Product updateProduct(Integer productId, Product productDetails);

    /**
     * 根据ID删除指定的商品
     *
     * @param productId 类别ID
     */
    void deleteProductById(Integer productId);
}